﻿using System;
using System.Collections.Generic;
using System.Linq;

namespace Persistencia
{
    public class IndexadoPersistence
    {        
        public Indexado GetIndexadoActivo()
        {
            Indexado indexado;
            using (SearchDBEntities mydb = new SearchDBEntities())
            {
                indexado = mydb.Indexado.FirstOrDefault(i => i.Activo);
            }
            return indexado;
        }

        /// <summary>
        /// Modfifica cual es el indexador seleccionado en la base
        /// </summary>
        /// <param name="idUsuario"></param>
        /// <param name="idIndexador"></param>
        public void ModificarIndexador(int idUsuario, int idIndexador)
        {
            using (SearchDBEntities mydb = new SearchDBEntities())
            {
                foreach (Indexado indexado in mydb.Indexado)
                {
                    indexado.Activo = indexado.Id == idIndexador;
                    indexado.Usuario_Ultima_Modificacion = idUsuario;
                    indexado.Fecha_Ultima_Modificacion = GetFecha();
                }
                mydb.SaveChanges();
            }
        }

        /// <summary>
        /// Obtieen la lista de FileSystemElements del sistema
        /// </summary>
        /// <returns></returns>
        public List<FileSystemElement> ObtenerFileSystemElements()
        {
            List<FileSystemElement> listadoFSE;

            using (SearchDBEntities myDb = new SearchDBEntities())
            {
                listadoFSE = myDb.FileSystemElement.ToList();
            }

            return listadoFSE;
        }

        /// <summary>
        /// 
        /// </summary>
        /// <returns></returns>
        public List<Indexado> ObtenerTiposIndexado()
        {
            List<Indexado> indexados;

            using (SearchDBEntities myDb = new SearchDBEntities())
            {
                indexados = myDb.Indexado.ToList();
            }

            return indexados;
        }

#region Metodos privados

        /// <summary>
        /// Obtiene la fecha del sistema
        /// </summary>
        /// <returns></returns>
        private static DateTime GetFecha()
        {
            TimeMgr.TimeMgr mgr = new TimeMgr.TimeMgr();
            return mgr.ObtenerFecha();
        }

#endregion


    }
}
